Преодоление «Отображение запрещено X-Frame-Options» - PullRequest
408 голосов
/ 12 июля 2011

Я пишу крошечную веб-страницу, цель которой состоит в том, чтобы создать несколько других страниц, просто объединяя их в одно окно браузера для удобства просмотра. На нескольких страницах, которые я пытаюсь создать, запрещается создание рамок, и выдается «Отказ от отображения документа, потому что отображение запрещено X-Frame-Options». ошибка в Chrome. Я понимаю, что это ограничение безопасности (по уважительной причине), и у меня нет доступа для его изменения.

Существует ли какой-либо альтернативный метод кадрирования или не кадрирования для отображения страниц в одном окне, который не будет отключен заголовком X-Frame-Options?

Ответы [ 26 ]

208 голосов
/ 21 июля 2011

У меня была похожая проблема, когда я пытался отобразить контент с нашего собственного сайта в iframe (как диалог в стиле лайтбокса с Colorbox ), и где у нас был сервер "X" -Frame-Options SAMEORIGIN "на исходном сервере, не позволяя загрузить его на наш тестовый сервер.

Кажется, это нигде не задокументировано, но если вы можете редактировать страницы, которые вы пытаетесь создать (например, это ваши собственные страницы), просто отправив еще один заголовок X-Frame-Options с любой строкой at all отключает команды SAMEORIGIN или DENY.

например. для PHP, поставив

<?php
    header('X-Frame-Options: GOFORIT'); 
?>

в верхней части вашей страницы заставит браузеры объединить два, что приведет к заголовку

X-Frame-Options SAMEORIGIN, GOFORIT

... и позволяет загружать страницу в фрейме. Кажется, это работает, когда первоначальная команда SAMEORIGIN была установлена ​​на уровне сервера, и вы хотели бы переопределить ее в постраничном случае.

Всего наилучшего!

158 голосов
/ 15 декабря 2011

Если вы получаете эту ошибку для видео YouTube, вместо того, чтобы использовать полный URL-адрес, используйте встроенный URL-адрес из параметров общего доступа.Это будет выглядеть как http://www.youtube.com/embed/eCfDxZxTBW4

Вы также можете заменить watch?v= на embed/, поэтому http://www.youtube.com/watch?v=eCfDxZxTBW4 станет http://www.youtube.com/embed/eCfDxZxTBW4

122 голосов
/ 19 сентября 2011

Если вы получаете эту ошибку при попытке встроить карту Google в iframe, необходимо добавить &output=embed к исходной ссылке.

53 голосов
/ 31 августа 2014

ОБНОВЛЕНИЕ 2019: Вы можете обойти X-Frame-Options в <iframe>, используя только клиентский JavaScript и мой X-Frame-Bypass Веб-компонент.Вот демо: Хакерские новости в X-Frame-Bypass.(Проверено в Chrome и Firefox.)

23 голосов
/ 24 августа 2012

Добавление

  target='_top'

к моей ссылке на вкладке facebook решило проблему для меня ...

21 голосов
/ 07 августа 2014

Существует плагин для Chrome, который отбрасывает эту запись заголовка (только для личного использования):

https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/reviews

20 голосов
/ 31 мая 2013

Если вы получаете эту ошибку, пытаясь встроить контент Vimeo, измените src iframe,

с: https://vimeo.com/63534746
на: http://player.vimeo.com/video/63534746

13 голосов
/ 16 апреля 2012

У меня была такая же проблема, когда я пытался встроить Moodle 2 в iframe, решение Site administration ► Security ► HTTP security и проверка Allow frame embedding

7 голосов
/ 21 января 2013

Это решение, ребята !!

FB.Event.subscribe('edge.create', function(response) {
    window.top.location.href = 'url';
});

Единственное, что сработало для приложений Facebook!

5 голосов
/ 02 сентября 2016

Я перепробовал почти все предложения.Однако единственное, что действительно решило проблему, это:

  1. Создайте .htaccess в той же папке, где находится ваш PHP-файл.

  2. Добавьте эту строку в htaccess:

    Header always unset X-Frame-Options

После этого должно работать встраивание PHP с помощью iframe из другого домена.

Дополнительно выможно добавить в начало вашего PHP-файла:

header('X-Frame-Options: ALLOW');

Что, однако, не было необходимости в моем случае.

...